/*
*  class:定义了一切事物的抽象特点
*  Object: class的实例
*  OOP： 封装（接口）、继承(子类继承父类)、多态(继承产生多的方法和属性，会产生不同的方法和属性)
*
*  Public: 修饰的属性活方法是共有的
*  Private： 修饰的属性活方法是私有的
*  protected： 修饰的属性活方法是受保护的
*
* */

class Animal {
    name: string
    constructor(name) {
        this.name = name
    }
    run(){
        return `${this.name} is running`
    }
}

const snake = new Animal('wangyang')


console.log(snake.run());

class Dog extends Animal{
    bark(){
        return `${this.name} is barking`
    }
}

const  xiaobao  = new Dog('xiaobao')
console.log(xiaobao.run());



